package main

import (
	"fmt"
	"strconv"
)

// 字符串常用函数
func main() {
	// 1. 获取字符串长度 len(T)
	str1 := "hello"
	fmt.Println("str1 len is ", len(str1)) // 5

	// 2. 遍历字符串
	// 2.1 常规for 遍历
	for i := 0; i < len(str1); i++ {
		fmt.Printf("%c ", str1[i]) // h e l l o 中文乱码，可用切片方式
	}
	fmt.Println()
	// 2.2 for_range
	for _, val := range str1 {
		fmt.Printf("%c ", val) // h e l l o
	}
	fmt.Println()
	// 2.3 字符串转切片 解决中文乱码
	slice := []rune(str1)
	for i := 0; i < len(slice); i++ {
		fmt.Printf("%c ", slice[i])
	}
	fmt.Println("\nfor end")

	// 3. 字符串转整数 strconc.Atoi(T) int
	n, _ := strconv.Atoi("12")
	fmt.Println("字符串转整数 ", n)

	// 4. 整数转字符串 strconv.Itoa(int) string
	str2 := strconv.Itoa(12)
	fmt.Println("整数转字符串", str2)

	// 5. string -> []byte
	bytes := []byte(str2)
	fmt.Println(bytes)

	// 6. []byte -> string
	str3 := string(bytes)
	fmt.Println(str3)

	// 7. 十进制转 2， 8 ， 16进制
	var n1 int64 = 12
	fmt.Println(strconv.FormatInt(n1, 2))
	fmt.Println(strconv.FormatInt(n1, 8))
	fmt.Println(strconv.FormatInt(n1, 16))
	// 1100
	// 14
	// c

}
